home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 2000 October / Software of the Month - Ultimate Collection Shareware 277.iso / pc / PROGRAMS / UTILITY / WINLINUX / DATA1.CAB / programs_-_include / ASM-SPAR.{_A / SIGNAL.H < prev    next >
C/C++ Source or Header  |  1999-09-17  |  7KB  |  256 lines

  1. /* $Id: signal.h,v 1.8 1998/07/29 16:32:39 jj Exp $ */
  2. #ifndef _ASMSPARC64_SIGNAL_H
  3. #define _ASMSPARC64_SIGNAL_H
  4.  
  5. #include <asm/sigcontext.h>
  6.  
  7. #ifdef __KERNEL__
  8. #ifndef __ASSEMBLY__
  9. #include <linux/personality.h>
  10. #include <linux/types.h>
  11. #endif
  12. #endif
  13.  
  14. /* On the Sparc the signal handlers get passed a 'sub-signal' code
  15.  * for certain signal types, which we document here.
  16.  */
  17. #define SIGHUP         1
  18. #define SIGINT         2
  19. #define SIGQUIT         3
  20. #define SIGILL         4
  21. #define    SUBSIG_STACK       0
  22. #define    SUBSIG_ILLINST     2
  23. #define    SUBSIG_PRIVINST    3
  24. #define    SUBSIG_BADTRAP(t)  (0x80 + (t))
  25.  
  26. #define SIGTRAP         5
  27. #define SIGABRT         6
  28. #define SIGIOT         6
  29.  
  30. #define SIGEMT           7
  31. #define    SUBSIG_TAG    10
  32.  
  33. #define SIGFPE         8
  34. #define    SUBSIG_FPDISABLED     0x400
  35. #define    SUBSIG_FPERROR        0x404
  36. #define    SUBSIG_FPINTOVFL      0x001
  37. #define    SUBSIG_FPSTSIG        0x002
  38. #define    SUBSIG_IDIVZERO       0x014
  39. #define    SUBSIG_FPINEXACT      0x0c4
  40. #define    SUBSIG_FPDIVZERO      0x0c8
  41. #define    SUBSIG_FPUNFLOW       0x0cc
  42. #define    SUBSIG_FPOPERROR      0x0d0
  43. #define    SUBSIG_FPOVFLOW       0x0d4
  44.  
  45. #define SIGKILL         9
  46. #define SIGBUS          10
  47. #define    SUBSIG_BUSTIMEOUT    1
  48. #define    SUBSIG_ALIGNMENT     2
  49. #define    SUBSIG_MISCERROR     5
  50.  
  51. #define SIGSEGV        11
  52. #define    SUBSIG_NOMAPPING     3
  53. #define    SUBSIG_PROTECTION    4
  54. #define    SUBSIG_SEGERROR      5
  55.  
  56. #define SIGSYS        12
  57.  
  58. #define SIGPIPE        13
  59. #define SIGALRM        14
  60. #define SIGTERM        15
  61. #define SIGURG          16
  62.  
  63. /* SunOS values which deviate from the Linux/i386 ones */
  64. #define SIGSTOP        17
  65. #define SIGTSTP        18
  66. #define SIGCONT        19
  67. #define SIGCHLD        20
  68. #define SIGTTIN        21
  69. #define SIGTTOU        22
  70. #define SIGIO        23
  71. #define SIGPOLL        SIGIO   /* SysV name for SIGIO */
  72. #define SIGXCPU        24
  73. #define SIGXFSZ        25
  74. #define SIGVTALRM    26
  75. #define SIGPROF        27
  76. #define SIGWINCH    28
  77. #define SIGLOST        29
  78. #define SIGPWR        SIGLOST
  79. #define SIGUSR1        30
  80. #define SIGUSR2        31
  81.  
  82. /* Most things should be clean enough to redefine this at will, if care
  83.    is taken to make libc match.  */
  84.  
  85. #define __OLD_NSIG    32
  86. #define __NEW_NSIG      64
  87. #define _NSIG_BPW         64
  88. #define _NSIG_WORDS       (__NEW_NSIG / _NSIG_BPW)
  89.  
  90. #define _NSIG_BPW32       32
  91. #define _NSIG_WORDS32     (__NEW_NSIG / _NSIG_BPW32)
  92.  
  93. #define SIGRTMIN       32
  94. #define SIGRTMAX       (__NEW_NSIG - 1)
  95.  
  96. #if defined(__KERNEL__) || defined(__WANT_POSIX1B_SIGNALS__)
  97. #define _NSIG            __NEW_NSIG
  98. #define __new_sigset_t        sigset_t
  99. #define __new_sigset_t32    sigset_t32
  100. #define __new_sigaction        sigaction
  101. #define __new_sigaction32    sigaction32
  102. #define __old_sigset_t        old_sigset_t
  103. #define __old_sigset_t32    old_sigset_t32
  104. #define __old_sigaction        old_sigaction
  105. #define __old_sigaction32    old_sigaction32
  106. #else
  107. #define _NSIG            __OLD_NSIG
  108. #define NSIG            _NSIG
  109. #define __old_sigset_t        sigset_t
  110. #define __old_sigset_t32    sigset_t32
  111. #define __old_sigaction        sigaction
  112. #define __old_sigaction32    sigaction32
  113. #endif
  114.  
  115. #ifndef __ASSEMBLY__
  116.  
  117. typedef unsigned long __old_sigset_t;            /* at least 32 bits */
  118. typedef unsigned int __old_sigset_t32;
  119.  
  120. typedef struct {
  121.        unsigned long sig[_NSIG_WORDS];
  122. } __new_sigset_t;
  123.  
  124. typedef struct {
  125.        unsigned int sig[_NSIG_WORDS32];
  126. } __new_sigset_t32;
  127.  
  128. /* A SunOS sigstack */
  129. struct sigstack {
  130.     /* XXX 32-bit pointers pinhead XXX */
  131.     char *the_stack;
  132.     int   cur_status;
  133. };
  134.  
  135. /* Sigvec flags */
  136. #define SV_SSTACK    1     /* This signal handler should use sig-stack */
  137. #define SV_INTR      2     /* Sig return should not restart system call */
  138. #define SV_RESET     4     /* Set handler to SIG_DFL upon taken signal */
  139. #define SV_IGNCHILD  8     /* Do not send SIGCHLD */
  140.  
  141. /*
  142.  * sa_flags values: SA_STACK is not currently supported, but will allow the
  143.  * usage of signal stacks by using the (now obsolete) sa_restorer field in
  144.  * the sigaction structure as a stack pointer. This is now possible due to
  145.  * the changes in signal handling. LBT 010493.
  146.  * SA_INTERRUPT is a no-op, but left due to historical reasons. Use the
  147.  * SA_RESTART flag to get restarting signals (which were the default long ago)
  148.  * SA_SHIRQ flag is for shared interrupt support on PCI and EISA.
  149.  */
  150. #define SA_NOCLDSTOP    SV_IGNCHILD
  151. #define SA_STACK    SV_SSTACK
  152. #define SA_ONSTACK    SV_SSTACK
  153. #define SA_RESTART    SV_INTR
  154. #define SA_ONESHOT    SV_RESET
  155. #define SA_INTERRUPT    0x10
  156. #define SA_NOMASK    0x20
  157. #define SA_SHIRQ    0x40
  158. #define SA_NOCLDWAIT    0x100 /* not supported yet */
  159. #define SA_SIGINFO      0x200
  160.  
  161.  
  162. #define SIG_BLOCK          0x01    /* for blocking signals */
  163. #define SIG_UNBLOCK        0x02    /* for unblocking signals */
  164. #define SIG_SETMASK        0x04    /* for setting the signal mask */
  165.  
  166. /* 
  167.  * sigaltstack controls
  168.  */
  169. #define SS_ONSTACK    1
  170. #define SS_DISABLE    2
  171.  
  172. #define MINSIGSTKSZ    4096
  173. #define SIGSTKSZ    16384
  174.  
  175. #ifdef __KERNEL__
  176. /*
  177.  * These values of sa_flags are used only by the kernel as part of the
  178.  * irq handling routines.
  179.  *
  180.  * SA_INTERRUPT is also used by the irq handling routines.
  181.  *
  182.  * DJHR
  183.  * SA_STATIC_ALLOC is used for the SPARC system to indicate that this
  184.  * interrupt handler's irq structure should be statically allocated
  185.  * by the request_irq routine.
  186.  * The alternative is that arch/sparc/kernel/irq.c has carnal knowledge
  187.  * of interrupt usage and that sucks. Also without a flag like this
  188.  * it may be possible for the free_irq routine to attempt to free
  189.  * statically allocated data.. which is NOT GOOD.
  190.  *
  191.  */
  192. #define SA_PROBE SA_ONESHOT
  193. #define SA_SAMPLE_RANDOM SA_RESTART
  194. #define SA_STATIC_ALLOC        0x80
  195. #endif
  196.  
  197. /* Type of a signal handler.  */
  198. #ifdef __KERNEL__
  199. typedef void (*__sighandler_t)(int, int, struct sigcontext *, char *);
  200. #else
  201. typedef void (*__sighandler_t)(int);
  202. #endif
  203.  
  204. #define SIG_DFL    ((__sighandler_t)0)    /* default signal handling */
  205. #define SIG_IGN    ((__sighandler_t)1)    /* ignore signal */
  206. #define SIG_ERR    ((__sighandler_t)-1)    /* error return from signal */
  207.  
  208. struct __new_sigaction {
  209.     __sighandler_t        sa_handler;
  210.     unsigned long        sa_flags;
  211.     void             (*sa_restorer)(void);     /* not used by Linux/SPARC yet */
  212.     __new_sigset_t        sa_mask;
  213. };
  214.  
  215. struct __new_sigaction32 {
  216.     unsigned        sa_handler;
  217.     unsigned int        sa_flags;
  218.     unsigned        sa_restorer;     /* not used by Linux/SPARC yet */
  219.     __new_sigset_t32     sa_mask;
  220. };
  221.  
  222. struct k_sigaction {
  223.     struct __new_sigaction     sa;
  224.     void            *ka_restorer;
  225. };
  226.  
  227. struct __old_sigaction {
  228.     __sighandler_t      sa_handler;
  229.     __old_sigset_t      sa_mask;
  230.     unsigned long       sa_flags;
  231.     void             (*sa_restorer)(void);     /* not used by Linux/SPARC yet */
  232. };
  233.  
  234. struct __old_sigaction32 {
  235.     unsigned        sa_handler;
  236.     __old_sigset_t32      sa_mask;
  237.     unsigned int        sa_flags;
  238.     unsigned        sa_restorer;     /* not used by Linux/SPARC yet */
  239. };
  240.  
  241. typedef struct sigaltstack {
  242.        void             *ss_sp;
  243.        int             ss_flags;
  244.        __kernel_size_t         ss_size;
  245. } stack_t;
  246.  
  247. typedef struct sigaltstack32 {
  248.        u32            ss_sp;
  249.        int             ss_flags;
  250.        __kernel_size_t32     ss_size;
  251. } stack_t32;
  252.  
  253. #endif /* !(__ASSEMBLY__) */
  254.  
  255. #endif /* !(_ASMSPARC64_SIGNAL_H) */
  256.